package cn.bdqn.controller;

import cn.bdqn.domain.Group;
import cn.bdqn.service.GroupService;
import cn.bdqn.utils.result.Page;
import cn.bdqn.utils.result.Result;
import cn.bdqn.utils.result.ResultGenerator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 机构控制层
 * @Author Wang-Hao
 * @create 2020/8/21 16:37
 */
@RestController
@RequestMapping("/group")
public class GroupController {

    @Autowired
    private GroupService groupService;

    /**
     * 根据id查询机构信息
     * @param groupId
     * @return
     * @throws Exception
     */
    @RequestMapping("/getGroupInfoByGroupId")
    public Result getGroupInfoByGroupId(Integer groupId)throws Exception {

        try {
            //调用service层的方法并返回成功的信息以及数据
            return ResultGenerator.genSuccessResult(groupService.selectGroupInfoById(groupId));
        }catch (Exception e){
            e.printStackTrace();
            //返回错误信息
            throw new Exception(e.getMessage());
        }

    }

    /**
     * 查询全部机构信息
     * @param startNumber 当前页码
     * @param pageSize 每页条数
     * @return
     * @throws Exception
     */
    @RequestMapping("/queryGroupAllInfoPaging")
    public Result queryGroupAllInfoPaging(Integer startNumber, Integer pageSize) throws Exception {

        try {
            //调用service层的方法并返回成功的信息以及数据
            Page page = groupService.selectGroupInfoAll(startNumber,pageSize);
            return ResultGenerator.genSuccessListResult(page.getMenuList(),page.getTotalRecord());
        }catch (Exception e){
            e.printStackTrace();
            //返回错误信息
            throw new Exception(e.getMessage());
        }

    }

    /**
     *根据机构名称或机构类型或地址查询全部机构信息
     * @param groupName    机构名称
     * @param groupTypeId   机构类型
     * @param address       地址
     * @param startNumber   当前页码
     * @param pageSize    每页条数
     * @return
     */
    @RequestMapping("/queryGroupInfoByGroupNamePaging")
    public Result queryGroupInfoByGroupNamePaging(String groupName, Integer groupTypeId, String address, Integer startNumber, Integer pageSize) throws Exception {

        try {
            //调用service层的方法并返回成功的信息以及数据
            Page page = groupService.selectGroupInfoByGroupName(groupName,groupTypeId,address,startNumber,pageSize);
            return ResultGenerator.genSuccessListResult(page.getMenuList(),page.getTotalRecord());
        }catch (Exception e){
            e.printStackTrace();
            //返回错误信息
            throw new Exception(e.getMessage());
        }

    }

    /**
     * 添加信息
     * @param group
     * @return
     * @throws Exception
     */
    @RequestMapping("/insertGroupInfo")
    public Result insertGroupInfo(Group group)throws Exception {

        try {

            //调用service层的根据课程id更新状态的方法
            groupService.addGroupInfo(group);
            //返回成功信息
            return ResultGenerator.genSuccessResult(group);
        }catch (Exception e){
            e.printStackTrace();
            //返回错误信息
            throw new Exception(e.getMessage());
        }

    }

    /**
     * 更新信息
     * @param group
     * @return
     * @throws Exception
     */
    @RequestMapping("/updateGroupInfo")
    public Result updateGroupInfo(Group group)throws Exception {

        try {
            //调用service层的根据课程id更新状态的方法
            groupService.updateGroupInfo(group);
            //返回成功信息
            return ResultGenerator.genSuccessResult(group);
        }catch (Exception e){
            e.printStackTrace();
            //返回错误信息
            throw new Exception(e.getMessage());
        }

    }

    /**
     * 删除指定的机构信息（逻辑删除）
     * @param groupId 机构id
     * @return
     * @throws Exception
     */
    @RequestMapping("/deleteInfoByGroupId")
    public Result deleteInfoByGroupId(Integer groupId)throws Exception{

        try {
            //调用service层的根据课程id更新状态的方法
            groupService.deleteGroupInfoByGroupId(groupId);
            //返回成功信息
            return ResultGenerator.genSuccessResult();
        }catch (Exception e){
            e.printStackTrace();
            //返回错误信息
            throw new Exception(e.getMessage());
        }

    }




}
